/**
 * @file hello_module.c
 * @author Ailson Jack (jackailson@foxmail.com)
 * @brief
 * @version 1.0
 * @date 2021-05-08
 *
 * @copyright Copyright (c) 2021
 *
 * @note blog:www.only2fire.com
 * https://zhuanlan.zhihu.com/p/537564006
 */
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
/* 内核模块加载函数 */
static int __init hello_module_init(void)
{
    //定义一个越界指针
    char *p;
    p=(char*)0x01ff9aa63bd4523c;
    printk(KERN_EMERG "[KERN_EMERG] Hello Module init!\r\n");
    printk("[default] Hello Module init!\r\n");
    printk("access to invalid point:%lx\n", p);
    *p='a';
    printk("access to invalid point finish\n");
    return 0;
}
/* 内核模块卸载函数 */
static void __exit hello_module_exit(void)
{
    printk(KERN_EMERG "[KERN_EMERG] Hello Module exit!\r\n");
    printk("[default] Hello Module exit!\r\n");
}
module_init(hello_module_init);
module_exit(hello_module_exit);
MODULE_LICENSE("GPL v2"); //表示模块代码接受的软件许可协议
MODULE_AUTHOR("Ailson Jack"); //描述模块的作者信息
MODULE_DESCRIPTION("hello module"); //对模块的简单介绍
MODULE_ALIAS("test_module"); //给模块设置一个别名

